using System;

namespace MikeKappel.Com.CS.PayPal.Model
{
    /// <summary>
    /// Summary description for PayPalUserSelectedOptions
    /// </summary>
    public class PayPalUserSelectedOptions
    {
        public enum ShippingCalculationModeType{
            Callback,
            Flatrate 
        }
        public PayPalUserSelectedOptions(ShippingCalculationModeType shippingCalculationMode,Boolean insuranceOptionSelected, Boolean shippingOptionIsDefault, Decimal shippingOptionAmount,String shippingOptionName)
        {
            this.shippingCalculationMode = shippingCalculationMode;
            this.insuranceOptionSelected = insuranceOptionSelected;
            this.shippingOptionIsDefault = shippingOptionIsDefault;
            this.shippingOptionAmount = shippingOptionAmount;
            this.shippingOptionName = shippingOptionName;
        }

        /// <summary>
        /// (Optional) Describes how the options that were presented to the user were determined. Is one of the following values:
        ///API - Callback 
        ///API - Flatrate 
        /// </summary>
        public ShippingCalculationModeType ShippingCalculationMode 
        {
            get
            {
                return shippingCalculationMode;
            }
            set
            {
                shippingCalculationMode = value;
            }
        }
        private ShippingCalculationModeType shippingCalculationMode;
        
        /// <summary>
        ///(Optional) The Yes/No option that you chose for insurance.
        /// </summary>
        public Boolean InsuranceOptionSelected 
        {
            get
            {
                return insuranceOptionSelected;
            }
            set
            {
                insuranceOptionSelected = value;
            }
        }
        private Boolean insuranceOptionSelected;
                
        /// <summary>
        /// (Optional) Is true if the buyer chose the default shipping option.
        /// Character length and limitations: true or false 
        /// </summary>
        public Boolean ShippingOptionIsDefault  
        {
            get
            {
                return shippingOptionIsDefault;
            }
            set
            {
                shippingOptionIsDefault = value;
            }
        }
        private Boolean shippingOptionIsDefault;
                        
        /// <summary>
        ///(Optional) The shipping amount that was chosen by the buyer
        ///Limitations: Must not exceed $10,000 USD in any currency. No currency symbol. Must have two decimal places, decimal separator must be a period (.), and the optional thousands separator must be a comma (,).
        /// </summary>
        public Decimal ShippingOptionAmount  
        {
            get
            {
                return shippingOptionAmount;
            }
            set
            {
                shippingOptionAmount = value;
            }
        }
        private Decimal shippingOptionAmount;
                                
        /// <summary>
        ///(Optional) Is true if the buyer chose the default shipping option.
        /// </summary>
        public String ShippingOptionName 
  
        {
            get
            {
                return shippingOptionName;
            }
            set
            {
                shippingOptionName = value;
            }
        }
        private String shippingOptionName;
         

    }
}